// 给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的连续子数组的个数 。
function subarraySum(nums: number[], k: number): number {

    let map : Map<number, number> = new Map<number, number>()
    map.set(0,1)
    let count : number = 0
    let preSum = 0
    for (const num of nums) {
        // 前缀和
        preSum += num
        // 如果之前出现过preSum - k的前缀和,也就是说，累加到count
        count += map.get(preSum - k) || 0
        // 存储当前前缀和出现的次数
        map.set(preSum, (map.get(preSum) || 0) + 1)
    }
    return count
};
